const JWT = require('jsonwebtoken')
const OSS = require('ali-oss')

var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();

const userList = [{
	username: 'admin',
	password: 'admin',
	nickname: "八维-管理员",
	avator: 'https://robohash.org/123',
	role: 'admin'
}, {
	username: 'zhangsan',
	password: 'zhangsan',
	nickname: "有梦想的程序员",
	avator: 'https://robohash.org/123123?set=set3',
	role: 'user'
}, {
	username: 'test',
	password: 'test',
	nickname: "是一个混子测试",
	avator: 'https://robohash.org/98765?set=set4',
	role: 'test'
}]
const bodyParser = require('body-parser')
module.exports = app => {
	app.use(bodyParser.json());

	app.post('/api/login', (req, res) => {
		// 1. 获取用户名和密码
		const {
			username,
			password
		} = req.body;
		// 2. 匹配
		const user = userList.find(v => {
			return v.username === username && v.password === password
		})
		// 3.判断
		if (user) {
			res.send({
				code: 200,
				data: {
					nickname: user.nickname,
					avator: user.avator,
					role: user.role,
					username: user.username,
					token: JWT.sign({
						nickname: user.nickname,
						avator: user.avator,
						role: user.role,
						username: user.username,
					}, '123456')
				},
				message: '登录成功， 欢迎' + user.nickname
			})
		} else {
			res.send({
				code: 400,
				message: '账户密码错误， 请重新登录'
			})
		}
	})


	app.post('/api/upload',multipartMiddleware, async (req, res) => {

		const { path,  originalFilename } = req.files.file;

		const client = new OSS({
			// yourregion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
			region: 'oss-cn-shanghai',
			// 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
			accessKeyId: 'LTAI5tRjiJMTpLXiDdjSUHRJ',
			accessKeySecret: 'Hg2oF2EYkMXkkwDE2tCn10A7NJXnzG',
			// 填写Bucket名称。
			bucket: '2011a',
		});

		try {
			// 填写OSS文件完整路径和本地文件的完整路径。OSS文件完整路径中不能包含Bucket名称。
			// 如果本地文件的完整路径中未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件。
			const result = await client.put(originalFilename, path)
			res.send({
				code: 200,
				data: result
			})

		} catch (e) {
			res.send({
				code: 400,
				error: e
			})
		}
	})


}